 // 开发者可以暴露自定义API供后加载脚本使用

// preload.js 中使用nodejs
const { readFileSync } = require('fs')

window.readConfig = function () {
  const data = readFileSync('./config.json')
  return data
}	


// index.html 后加载的内容可以使用window.readConfig()方法，但不能使用Node.js特性
console.log(window.readConfig()) // 正常执行
console.log(readFileSync('./config.json')) // 报错

var timerRunner = false; //需要抢夺的定时器

var userAction = {
    auto_shutdown:1,
    auto_keyboard_shortcuts:1,
};
var model = '';
var promptText = '请输入要转化的文字';
var inputValue = '';
//输入延迟
var inputLag = 350;



var onload = function()
{
    
};
var onSearch = function(action, searchWord, callbackSetList)
{
    try {
        console.log('触发搜索')
        model = action.payload;
        inputValue = searchWord;
        let selectData = [];
        if(inputValue !== '') {
            if (timerRunner === false) {
                callbackSetList([]);
                timerRunner = true;
                setTimeout(function () {
                    timerRunner = false;
                    selectData = getListData(action.payload);
                    callbackSetList(selectData)
                }, inputLag);
            }
        }

    } catch (e) {
        console.log(e);
        fundebug.notifyError(e);
    }
};

window.exports = {
  js: {
    // 注意：键对应的是plugin.json中的features.code
    mode: "list", // 列表模式
    args: {
      // 进入插件时调用（可选）
      enter: (action, callbackSetList) => {
        console.log('进入插件')
        // 如果进入插件就要显示列表数据
        callbackSetList(search(""));
      },
      // 子输入框内容变化时被调用 可选 (未设置则无搜索)
      search: (action, searchWord, callbackSetList) => {
        // 获取一些数据
        // 执行 callbackSetList 显示出来
        callbackSetList(search(searchWord));
      },
      // 用户选择列表中某个条目时被调用
      select: (action, itemData) => {
        try {
          window.utools.hideMainWindow();
          let cmd = `bash -l -c 'code "${itemData.description}"'`;
          if (process.platform == "win32") {
            cmd = `code "${itemData.description}"`;
          }
          let res = require("child_process").execSync(cmd);
          if (res.toString() !== "") throw res.toString();
          window.utools.outPlugin();
        } catch (error) {
          alert(error);
        }
      },
      // 子输入框为空时的占位符，默认为字符串"搜索"
      placeholder: "请输入关键词搜索项目"
    }
  },
  json: {
    // 注意：键对应的是plugin.json中的features.code
    mode: "list", // 列表模式
    args: {
      // 进入插件时调用（可选）
      enter: (action, callbackSetList) => {
        // 如果进入插件就要显示列表数据
        callbackSetList(search(""));
      },
      // 子输入框内容变化时被调用 可选 (未设置则无搜索)
      search: (action, searchWord, callbackSetList) => {
        // 获取一些数据
        // 执行 callbackSetList 显示出来
        callbackSetList(search(searchWord));
      },
      // 用户选择列表中某个条目时被调用
      select: (action, itemData) => {
        try {
          window.utools.hideMainWindow();
          let cmd = `bash -l -c 'code "${itemData.description}"'`;
          if (process.platform == "win32") {
            cmd = `code "${itemData.description}"`;
          }
          let res = require("child_process").execSync(cmd);
          if (res.toString() !== "") throw res.toString();
          window.utools.outPlugin();
        } catch (error) {
          alert(error);
        }
      },
      // 子输入框为空时的占位符，默认为字符串"搜索"
      placeholder: "请输入关键词搜索项目"
    }
  }
};